The importance of three-dimensional (3D) enabled embedded platforms has become increasingly important due to users' expectations of multimedia-rich environments in products ranging from DVD players, set-top boxes, Web pads and mobile computing device (including handheld computing devices) to navigational equipment and medical instrumentation. The importance of 3D rendering is manifested in its ability to provide users with greater and more detailed visual information. As users continue to expect equal or nearly equal graphics quality on embedded devices as on their desktop systems, applications designed to run on embedded platforms continue to converge with their desktop equivalents. Thus, the need for 3D graphics rendering is vital in today's embedded systems.
One of the more popular 3D rendering standards available today is Direct3D by Microsoft® Corporation. Direct 3D is an application programming interface (API) for manipulating and displaying 3D objects. Direct3D provide programmers and developers with a way to develop 3D applications that can utilize whatever graphics acceleration hardware is installed on the system. Direct3D does an excellent job in supporting efficient rendering in desktop applications. These desktop systems typically have powerful central processing units (CPUs), math coprocessors, and graphics processing units (GPUs).
Typical graphic rendering standards (such as Direct3D) are implemented using floating-point operations (such as transform and lighting). In embedded systems, the CPUs may not be powerful enough to support floating-point operations and they typically have no coprocessors or GPUs for accelerating the floating-point operations. Moreover, the graphics technology in these embedded platforms generally do not enable a number of key 3D graphics technologies (such as a vertex shader, a pixel shader, and vertex blending) that are required in applications designed for desktop systems. Thus, moving these rendering standards that work well on desktop systems directly to embedded platforms is not feasible because of the lack of powerful hardware and processing power on embedded systems.
One technique used to overcome the hardware problem in embedded systems is to integrate the graphics rendering into software. However, floating-point software routines are notoriously slow. Moreover, floating-point operations are expensive and require large amounts of memory and have a large code size. Thus, using floating-point operations in software-implemented graphics rendering is in impractical on an embedded platform. Therefore, there exists a need for a graphics rendering system that is optimized for operation on an embedded platform. Moreover, there is a need for a graphics rendering system that is software-implemented such that powerful hardware and processing power is not required. There is also so need for a software-implemented graphics rendering system to be fast, efficient require less memory and have a small code size such that the graphics rendering system is ideal for embedded platforms.